﻿using System.Collections.Generic;

namespace HybridLab.Virtual.Interfaces
{
	/// <summary>
	/// A Virtual Host that hosts machines in a TFS 2012 Standard Environment 
	/// </summary>
	public interface IVirtualHost
	{
		/// <summary>
		/// The name of the virtual host
		/// </summary>
		string HostName { get; }

		/// <summary>
		/// The domain of the user credentials to connect to this host
		/// </summary>
		string Domain { get; }

		/// <summary>
		/// The username to connect to this host
		/// </summary>
		string UserName { get; }

		/// <summary>
		/// The password to connect to this host
		/// </summary>
		string Password { get; }

		/// <summary>
		/// The host type
		/// </summary>
		string HostType { get; }

		/// <summary>
		/// Connects to a virtual host
		/// </summary>
		/// <param name="hostName">Host to connect to</param>
		/// <param name="domain">Domain for credentials</param>
		/// <param name="userName">Username for connecting</param>
		/// <param name="password">Password for connecting</param>
		void Connect(string hostName, string domain, string userName, string password);

		/// <summary>
		/// Returns all the virtual machines in this host
		/// </summary>
		/// <returns>A List of IVirtualMachine</returns>
		List<IVirtualMachine> GetVMs();
	}
}
